#pragma once
#include "Scene.h"

struct ModelViewProjectionConstantBuffer
{
	DirectX::XMFLOAT4X4 model;
	DirectX::XMFLOAT4X4 view;
	DirectX::XMFLOAT4X4 projection;
};

struct VertexPositionColor
{
	DirectX::XMFLOAT3 pos;
	DirectX::XMFLOAT3 color;
};

namespace DXBase
{
	namespace Samples
	{
	    [Windows::Foundation::Metadata::WebHostHidden]
		public ref class CubeRenderer sealed : ISceneData
		{
		public:
			virtual Windows::Foundation::IAsyncOperation<bool>^ LoadAsync(DXContext^ ctxt);
			virtual void Reset();
			virtual void Resize(DXContext^ ctxt);
			virtual void Render(DXContext^ ctxt, PerformanceTimer^ timer);

		private:
			Microsoft::WRL::ComPtr<ID3D11InputLayout> m_inputLayout;
			Microsoft::WRL::ComPtr<ID3D11Buffer> m_vertexBuffer;
			Microsoft::WRL::ComPtr<ID3D11Buffer> m_indexBuffer;
			Microsoft::WRL::ComPtr<ID3D11VertexShader> m_vertexShader;
			Microsoft::WRL::ComPtr<ID3D11PixelShader> m_pixelShader;
			Microsoft::WRL::ComPtr<ID3D11Buffer> m_constantBuffer;

			uint32 m_indexCount;
			ModelViewProjectionConstantBuffer m_constantBufferData;

		private:
		};
	}
}